/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package DOM.Estructura;

import Utilidades.IIterador;
import java.util.ArrayList;

/**
 * Iterador que se utiliza para recorrer los diferentes nodos de la estructura
 * jerárquica del XML, representada por patrón Composite
 * @author Administrador
 */
public class IteradorComponentes implements IIterador{

  private ArrayList<IComponente> vector; //lista de elementos a recorrer
  private int indiceActual; //indice del elemento actual sobre cual trabajar

  /**
   * Constructor que recibe el listado de elementos
   * @param vector lista de elementos a recorrer
   */
  public IteradorComponentes(ArrayList vector){
    this.vector=vector;
  }

  /**
   * Metodo para inciar a recorrer, que indica que el elemento actual es el primero
   * de la lista
   */
  public void primero() {
      indiceActual = 0;
  }

  /**
   * Actualiza el indice del elemento a analizar, que corresponde al siguiente del
   * elemento actual.
   */
  public void siguiente() {
      if( (indiceActual) < this.vector.size()){
            indiceActual++;
      }
  }

  /**
   * Devuelve el elemento que corresponde analizar, de acuerdo al indice actual
   * @return componente a analizar
   */
  public Object elementoActual() {
      return vector.get(indiceActual);
  }

  /**
   * Determina si hay más elementos para analizar en el vector
   * @return true si hay màs elementod, false en caso contrario
   */
  public boolean haTerminado() {
      boolean hayMas = true;
      if(indiceActual == this.vector.size()){
          hayMas = false;
      }        
      return hayMas ;
  }
  
}
